package com.handydata.antifraud.ws;

import com.handydata.antifraud.common.exception.WsInvokeException;
import com.handydata.antifraud.to.WsReqTO;
import com.handydata.antifraud.to.WsResTO;

/**
 * ws服务调用接口
 * @param <T>
 * @param <R>
 */
public interface WsInvocationService<T extends WsReqTO,R extends WsResTO>  {
    /**
     * 调用ws接口定义
     *
     * <p>
     * 此接口实现者为：
     * 1.数据平台
     * 2.爬虫
     * 3.网上的api接口
     * </p>
     *
     * <p>
     * 包放置约定：
     * 1.ws.dap  数据平台
     * 2.ws.net  网上api
     * 3.ws.spider 爬虫
     * </p>
     *
     * 数据平台调用实现类必须继承 {@link com.handydata.antifraud.ws.dap.DataPlatformWsService}
     * 其他实现类需继承 {@link com.handydata.antifraud.ws.AbstractWsService}
     *
     * @param req 请求参数
     * @return
     * @throws WsInvokeException
     */
    public R query(T req) throws WsInvokeException;
}
